package cn.com.seeederland.gkrpc.transport;

import cn.com.seederland.gkrpc.Peer;

import java.io.InputStream;

/**
 * @ClassName TransportClient
 * @Author SighFate
 * @Date 2020/10/06 22:32
 * @Version 1.0
 * @Description 客户端通讯步骤如下所示：<br/>
 *              <ul>
 *                  <li>1、创建连接</li>
 *                  <li>2、发送数据，并且等待响应</li>
 *                  <li>3、关闭连接</li>
 *              </ul>
 */
public interface TransportClient {

    /**
     * 创建连接
     * @param peer 需要连接的服务器单点
     */
    void createConnection(Peer peer);

    /**
     * 发送请求，并等待响应
     * @param data 需要发送的请求数据
     * @return 响应的数据
     */
    InputStream sendAndWaitResponse(InputStream data);

    /**
     * 关闭连接
     */
    void closeConnection();
}
